# 定义编译器和编译选项
CXX = g++
CXXFLAGS = -Wall -g
PY = python3

# 找到所有的C++源文件
SRC_CPP = $(wildcard *.cpp)
# 生成目标可执行文件列表
TARGETS_CPP = $(SRC_CPP:.cpp=)

# 找到所有的Python源文件
SRC_PY = $(wildcard *.py)
# 目标是运行Python脚本，不需要生成文件
TARGETS_PY = $(SRC_PY)

# 默认目标
all: run doc

# 对于每个源文件，生成相应的可执行文件
%: %.cpp
	$(CXX) -Wno-warnings -o $@ $<

# 执行所有可执行文件
run: $(TARGETS_CPP) $(TARGETS_PY) 
	@for exe in $(TARGETS_CPP); do \
		echo "Running $$exe..."; \
		./$$exe; \
	done
	@for script in $(SRC_PY); do \
		echo "Running $$script..."; \
		$(PY) $$script; \
	done

# 处理文档生成
OBJ = $(wildcard *.tex)

doc: $(OBJ)
	@xelatex $^
	@bibtex main.aux
	@xelatex $^
	@xelatex $^

.PHONY: all clean doc run 
clean:
	rm -f *.aux *.bbl *.blg *.log *.run.xml *.synctex.gz *.csv main.bbl main-blx.bib 
	rm -f $(TARGETS_CPP)  
	latexmk -c